/*
    晶矿数目
    1. 每行挨个遍历，寻找r和b，即红黑晶矿点
    2. 找到晶矿点后，进行bfs（连通图的一种遍历策略），bfs的每个点都打上标记，之后遍历到的时候直接跳过
*/
#include <iostream>
#include <queue>
using namespace std;
char maze[30][30];
int K, n, r, b;
struct node
{
    int x;
    int y;
    node(int xx, int yy)
    {
        x = xx;
        y = yy;
    }
};
void bfs(int start_x, int start_y, char mine)
{
    int x, y;
    node start(start_x, start_y), pre_node(0, 0);
    queue<node> node_que;
    node_que.push(start);
    while (!node_que.empty())
    {
        pre_node = node_que.front();
        node_que.pop();
        x = pre_node.x;
        y = pre_node.y;
        // 向上走
        if (x >= 1)
        {
            if (maze[x - 1][y] == mine) // 如果找到当前一样的矿，就打上标记'S'
            {
                maze[x - 1][y] = 'S';
                pre_node.x = x - 1;
                pre_node.y = y;
                node_que.push(pre_node);
            }
        }
        // 向下走
        if (x < n - 1)
        {
            if (maze[x + 1][y] == mine)
            {
                maze[x + 1][y] = 'S';
                pre_node.x = x + 1;
                pre_node.y = y;
                node_que.push(pre_node);
            }
        }
        // 向左走
        if (y >= 1)
        {
            if (maze[x][y - 1] == mine)
            {
                maze[x][y - 1] = 'S';
                pre_node.x = x;
                pre_node.y = y - 1;
                node_que.push(pre_node);
            }
        }
        // 向右走
        if (y < n - 1)
        {
            if (maze[x][y + 1] == mine)
            {
                maze[x][y + 1] = 'S';
                pre_node.x = x;
                pre_node.y = y;
                node_que.push(pre_node);
            }
        }
    }
}
void mining()
{
    r = 0, b = 0;
    for (size_t i = 0; i < n; i++)
    {
        for (size_t j = 0; j < n; j++)
        {
            if (maze[i][j] == 'r')
            {
                r += 1;
                bfs(i, j, 'r'); // 将'r'周围连通图遍历,并打上标记
            }
            if (maze[i][j] == 'b')
            {
                b += 1;
                bfs(i, j, 'b'); // 将'b'周围连通图遍历,并打上标记
            }
        }
    }
}
int main()
{
    cin >> K;
    while (K--)
    {
        cin >> n;
        for (size_t i = 0; i < n; i++)
        {
            for (size_t j = 0; j < n; j++)
            {
                cin >> maze[i][j];
            }
        }
        mining();
        cout << r << " " << b << endl;
    }
}
